package com.example.kaogong.sys.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.example.kaogong.common.utils.RespBean;
import com.example.kaogong.sys.pojo.CourseType;
import com.example.kaogong.sys.mapper.CourseTypeMapper;
import com.example.kaogong.sys.pojo.dto.CourseTypeDto;
import com.example.kaogong.sys.pojo.vo.CourseTypeVo;
import com.example.kaogong.sys.service.ICourseTypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 课程类型 服务实现类
 * </p>
 *
 * @author    
 * @since 2022-03-26
 */
@Service
public class CourseTypeServiceImpl extends ServiceImpl<CourseTypeMapper, CourseType> implements ICourseTypeService {

    @Autowired
    private CourseTypeMapper courseTypeMapper;

    /**
     * 新增课程类型
     * @param courseTypeDto 课程类型传输对象
     * @return
     */
    @Override
    public RespBean addCourseType(CourseTypeDto courseTypeDto) {
        try {
            // 查询课程类型是否已存在
            Integer typeName = courseTypeMapper.selectCount(new QueryWrapper<CourseType>().eq("type_name", courseTypeDto.getTypeName()));
            if (typeName >= 1)
                return RespBean.error("插入课程类型失败，该课程类型已存在");

            // 插入课程类型
            CourseType courseType = new CourseType(null, courseTypeDto.getTypeName(), courseTypeDto.getTypeMark(), null);
            int insert = courseTypeMapper.insert(courseType);
            if (insert >= 1)
                return RespBean.success();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return RespBean.error();
    }

    /**
     * 根据课程类型编号删除课程类型
     * @param typeId 课程类型编号
     * @return
     */
    @Override
    public RespBean deleteCourseTypeByTypeId(Integer typeId) {
        try {
            int update = courseTypeMapper.update(new CourseType(null, null, null, true),
                    new UpdateWrapper<CourseType>().eq("type_id", typeId));
            if (update >= 1)
                return RespBean.success();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return RespBean.error();
    }

    /**
     * 获取所有课程类型
     * @return
     */
    @Override
    public RespBean<List<CourseTypeVo>> getAllCourseType() {
        try {
            List<CourseTypeVo> courseTypeVoList = courseTypeMapper.getAllCourseType();
            return RespBean.success(courseTypeVoList);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return RespBean.error();
    }
}
